package com.hunter10;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class test55 {

	public static void main(String[] args) {
		ArrayList<String> number = new ArrayList();
		for (int i = 3; i < 10; i++) {
			number.add(i + "");
		}
		number.add("J");
		number.add("Q");
		number.add("K");
		number.add("A");
		number.add("2");
		// 增强for循环 测试number集合
//		for (String s : number) {
//			System.out.print(s + "  ");
//		}
		System.out.println(number);
		ArrayList<String> color = new ArrayList();
		color.add("♥");
		color.add("♠");
		color.add("♦");
		color.add("♣");
		// 测试 number 集合

		System.out.println("-------");
//		for(String s2:color) {
//			System.out.print(s2+"  ");
//		}
		System.out.println(color);
		// 创建Map集合存放54张牌和对应的键
		HashMap<Integer, String> map = new HashMap();
		// 双层循环将牌的键和值存放进map集合
		int index = 0;
		for (String s : number) {
			for (String h : color) {
				map.put(index++, h + s);
			}
		}
		map.put(index++, "小王♔");
		map.put(index++, "大王♚");
		// 测试map集合中的键和值
		Set keys = map.keySet();
		Iterator it = keys.iterator();
		while (it.hasNext()) {
			Object key = it.next();
			System.out.println(key + "  " + map.get(key));
		}
		// 创建集合card用来存放0到53之间的数字
		ArrayList<Integer> cards = new ArrayList();
		for (int i = 0; i <= 53; i++) {
			cards.add(i);
		}
		System.out.println("打散前：" + cards);
		// 模拟洗牌，将cards集合中的数字打散
		Collections.shuffle(cards);
		System.out.println("打散后：" + cards);
		// 模拟摸牌 创建三个玩家 底牌
		ArrayList<Integer> player1 = new ArrayList();
		ArrayList<Integer> player2 = new ArrayList();
		ArrayList<Integer> player3 = new ArrayList();
		ArrayList<Integer> dipai = new ArrayList();
		// 将四个集合添加到合适的元素
		for (int i = 0; i <= 53; i++) {

			if (i >= 51) {// 最后三张为底牌
				dipai.add(cards.get(i));
			} else if (i % 3 == 0) { // 第一位玩家摸牌 0 3 6 9
				player1.add(cards.get(i));
			} else if (i % 3 == 1) { // 1 4 7 10
				player2.add(cards.get(i));
			} else { // 2 5 8 11
				player3.add(cards.get(i));
			}
		}
		// 测试玩家和底牌的序号
		System.out.println("p1:" + player1);
		System.out.println("p2:" + player2);
		System.out.println("p3:" + player3);
		System.out.println("底牌:" + dipai);
		// 模拟按照数字整理牌
		Collections.sort(player1);
		Collections.sort(player2);
		Collections.sort(player3);
		System.out.println("p1牌整理后" + player1);
		System.out.println("p2牌整理后" + player2);
		System.out.println("p3牌整理后" + player3);
		// 将键对应的牌面分配给三个玩家和底牌
		ArrayList<String> paimian1 = new ArrayList();
		ArrayList<String> paimian2 = new ArrayList();
		ArrayList<String> paimian3 = new ArrayList();
		ArrayList<String> dipaipaimian = new ArrayList();
		// 从map集合中根据每个玩家和底牌对应的键，将合适的牌面添加到上面四个集合
		// 遍历player1 player2 player3 dipai四个集合，遍历的过程中向对应的集合添加合适的元素
		for (Integer s : player1) {
			paimian1.add(map.get(s));
		}
		for (Integer s : player2) {
			paimian2.add(map.get(s));
		}
		for (Integer s : player3) {
			paimian3.add(map.get(s));
		}
		for (Integer s : dipai) {
			dipaipaimian.add(map.get(s));
		}
		System.out.println("-----");
		System.out.println("p1手牌:" + paimian1);
		System.out.println("p2手牌:" + paimian2);
		System.out.println("p3手牌:" + paimian3);
		System.out.println("底牌:" + dipaipaimian);
	}

}
